package config

import (
	"github.com/go-ini/ini"
)

var Cfg *Config

type Config struct {
	Db     db     `ini:"db"`
	Addr   string `ini:"addr"`
	System System `ini:"system"`
	Log    Log    `ini:"log"`
}

type Log struct {
	Path  string `ini:"path"`
	Level string `ini:"level"`
}
type System struct {
	CasbinPath string `ini:"casbin_path"`
}

type db struct {
	Host             string `ini:"host"`
	Port             int    `ini:"port"`
	Username         string `ini:"username"`
	Password         string `ini:"password"`
	Db               string `ini:"db"`
	Charset          string `ini:"charset"`
	ConnectTimeoutMs uint64 `ini:"connect_timeout_ms"`
	LogPath        string `ini:"log_path"`
}

func LoadConfig(configPath string) {
	cfg, err := ini.ShadowLoad(configPath)
	if err != nil {
		panic(err)
	}
	rc := Config{}
	err = cfg.MapTo(&rc)
	if err != nil {
		panic(err)
	}
	Cfg = &rc
}
